// ------------- 将列表中的元素进行逐一映射 ----------
val a = List("a", "b", "c", "d")
val b = List(1, 2, 3, 4)

// map遍历做映射
a.map(x => x.toUpperCase)
// 使用_匿名函数通配
a.map(_.toUpperCase)

// 通配符使用
b.filter(_%2 == 1).map(_+10)

// 双层List
val q = List(b, List(5, 6, 7))
// 查询q中所有的偶数
q.map(x => x.filter(y => y%2 == 0))
q.map(_.filter(_%2 == 0))

// 压扁 flatMap会将两层的List压缩为一层
q.flatMap(_.filter(_%2 == 0))

// ------------------ 集合规约操作 ------------------
// reduceLeft(op: (T, T) => T) 参照笔记对照图 对两个元素做op操作，得到T
b.reduceLeft((x, y) => x+y)
b.reduceLeft(_+_)

// foldLeft(z: U)(op: (U, T) => U)  参照笔记对照图 初始值z是U类型，U类型与T类型数据执行op操作后，得到的U类型结果
b.foldLeft(0)((x, y) => x + y)
b.foldLeft(0)(_ + _)
b.foldLeft(3)(_ * _)
